package org.yaac.shared;

import org.yaac.shared.egql.ResultCell;
import org.yaac.shared.egql.Result;
import org.yaac.shared.file.BlobUploadResult;
import org.yaac.shared.file.FileDownloadPath;
import org.yaac.shared.file.CacheUploadResult;

import com.google.web.bindery.autobean.shared.AutoBean;
import com.google.web.bindery.autobean.shared.AutoBeanFactory;

/**
 * AutoBean factory used by channel API to encode and decode
 * 
 * no other class will actually call method defined in this interface
 * 
 * these are just used by GWT's magic
 * 
 * @author Max Zhu (thebbsky@gmail.com)
 *
 */
public interface YaacAutoBeanFactory extends AutoBeanFactory {

	/**
	 * @return
	 */
	AutoBean<Result> statementResult();

	/**
	 * @return
	 */
	AutoBean<ResultCell> resultCell();
	
	/**
	 * @return
	 */
	AutoBean<FileDownloadPath> fileDownloadPath();
	
	/**
	 * @return
	 */
	AutoBean<CacheUploadResult> cacheUploadResult();
	
	/**
	 * @return
	 */
	AutoBean<BlobUploadResult> blobUploadResult();
}
